class Speed
def initialize(value)
@value = value
end
def to_s
"Speed: " + @value.to_s
end
end
speed1 = Speed.new(10)
speed2 = Speed.new(20)
puts speed1
puts speed2
class Speed
def initialize(value, unit)
@value = value
@unit = unit
end
def to_s
"Speed #{@value} #{@unit}"
end
def +(other)
if @unit == other.@unit # <--------------!
Speed.new(@value + other.@value, @unit) # <--------------!
else
self # lepiej rzucić wyjątek
end
end
end
class Speed
attr_reader :unit, :value
def initialize(value, unit)
@value = value
@unit = unit
end
def to_s
"Speed #{@value} #{@unit}"
end
def +(other)
if @unit == other.unit
Speed.new(@value + other.value, @unit)
else
self
end
end
end
speed1 = Speed.new(10, :KMH)
speed2 = Speed.new(20, :KMH)
speed3 = speed1 + speed2
puts speed3
class SpaceShip
def initalize(speed)
@speed = speed
end
def accelerate(speed)
@speed += speed
end
end
class Speed
attr_reader :unit
def initialize(unit)
@unit = unit
end
end
class Speed1D < Speed
attr_reader :value
def initialize(unit, value)
super(unit)
@value = value
@unit = :KMH
end
end
speed1 = Speed1D.new(10, :MS)
speed1.unit #=> :KMH
class Speed
attr_accessor :unit
def initialize(unit)
@unit = unit
end
end
speed1 = Speed.new(:KMH)
puts speed1.unit()
speed1.unit=(:MPH)
puts speed1.unit
speed1.unit = "abc"
puts speed1.unit
class Speed
attr_reader :unit
VALID_UNITS = [:KMH, :MPH]
def initialize(unit)
@unit = unit
end
def unit=(new_value)
if VALID_UNITS.include?(new_value)
@unit = new_value
end
end
end
speed1 = Speed.new(:KMH)
puts speed1.unit
speed1.unit = :MPH
puts speed1.unit
speed1.unit = "abc"
puts speed1.unit